//api/request.tsx
import axios from 'axios';
import codeError from "../utils/CodeError.ts";
import {message} from "antd";
import {tansParams} from "../utils/Params.ts";

//封装请求
const service=axios.create({
    //跨域设置 http-proxy-middleware
    baseURL:process.env.REACT_APP_BASE_API,
    // timeout:10000
})

service.interceptors.request.use(config=>{
    // console.log(process.env.REACT_APP_BASE_API)
    config.headers['Content-Type']='application/json';
    //2.为了判断是否为formdata格式，增加了一个变量为type,post請求且數據以JSON鍵值對，默认是这个
    //如果type存在，而且是form的话，则代表是UrlSearchParams(application/x-www-form-urlencoded)的格式
    if (config.type && config.type === 'url-form') {
        config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
    }
    // get请求映射params参数
    if (config.method === 'get' && config.params) {
        let url = config.url + '?' + tansParams(config.params);
        url = url.slice(0, -1);
        config.params = {};
        config.url = url;
    }
    if(config.method==='post'){

    }
    //post请求防止重复提交
    return config
})
service.interceptors.response.use(response=>{
    console.log(response)
    const code=response.data.data.code;
    const msg=response.data.data.msg || codeError['default']
    // 二进制数据则直接返回
    if (response.request.responseType ===  'blob' || response.request.responseType ===  'arraybuffer') {
        return  response.data;
    }
    if(code===200){
        return response.data;
    }else if(code===4000){
        message.error(msg)
        return Promise.reject('error')
    }else{
        return response.data;
    }



})
export default service;